{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notes:\n",
    " * same as run 2, longer training, slight hparam tweaks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['/mnt/tess/astronet/checkpoints/vetting_base_2_run_4/1/AstroCNNModelVetting_base_20210907_133202',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_4/2/AstroCNNModelVetting_base_20210907_134247',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_4/3/AstroCNNModelVetting_base_20210907_135321',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_4/4/AstroCNNModelVetting_base_20210907_140358',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_4/5/AstroCNNModelVetting_base_20210907_141443',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_4/6/AstroCNNModelVetting_base_20210907_142535',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_4/7/AstroCNNModelVetting_base_20210907_143623',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_4/8/AstroCNNModelVetting_base_20210907_144711',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_4/9/AstroCNNModelVetting_base_20210907_145807',\n",
       " '/mnt/tess/astronet/checkpoints/vetting_base_2_run_4/10/AstroCNNModelVetting_base_20210907_150856']"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import os\n",
    "\n",
    "chkpt_root = '/mnt/tess/astronet/checkpoints/vetting_base_2_run_4'\n",
    "data_files = '/mnt/tess/astronet/tfrecords-vetting-2-val/*'\n",
    "tces_file = '/mnt/tess/astronet/tces-vetting-v2-val.csv'\n",
    "\n",
    "nruns = 10\n",
    "\n",
    "def load_ensemble(chkpt_root, nruns):\n",
    "    checkpts = []\n",
    "    for i in range(nruns):\n",
    "        parent = os.path.join(chkpt_root, str(i + 1))\n",
    "        if not os.path.exists(parent):\n",
    "            break\n",
    "        all_dirs = os.listdir(parent)\n",
    "        if not all_dirs:\n",
    "            break\n",
    "        d, = all_dirs\n",
    "        checkpts.append(os.path.join(parent, d))\n",
    "    return checkpts\n",
    "\n",
    "paths = load_ensemble(chkpt_root, nruns)\n",
    "paths"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running model 1\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 2\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 3\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 4\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 5\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 6\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 7\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 8\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 9\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n",
      "Running model 10\n",
      "Binary prediction threshold: 0.2152499407880693 (orientative)\n",
      "231 records\n"
     ]
    }
   ],
   "source": [
    "import getpass\n",
    "import os\n",
    "from astronet import predict\n",
    "import tensorflow as tf\n",
    "\n",
    "\n",
    "def run_predictions(path):\n",
    "    predict.FLAGS = predict.parser.parse_args([\n",
    "      '--model_dir', path,\n",
    "      '--data_files', data_files,\n",
    "      '--output_file', '',\n",
    "    ])\n",
    "\n",
    "    return predict.predict()\n",
    "\n",
    "\n",
    "paths = load_ensemble(chkpt_root, nruns)\n",
    "ensemble_preds = []\n",
    "config = None\n",
    "for i, path in enumerate(paths):\n",
    "    print(f'Running model {i + 1}')\n",
    "    preds, config = run_predictions(path)\n",
    "    ensemble_preds.append(preds.set_index('tic_id'))\n",
    "    print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "labels = ['disp_p', 'disp_e', 'disp_n']\n",
    "\n",
    "col_p = labels.index('disp_p')\n",
    "thresh = config.hparams.prediction_threshold\n",
    "thresh = 0.5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "agg_preds = {}\n",
    "\n",
    "for preds in ensemble_preds:\n",
    "    for tic_id in preds.index:\n",
    "        if tic_id not in agg_preds:\n",
    "            agg_preds[tic_id] = []\n",
    "\n",
    "        row = preds[preds.index == tic_id]\n",
    "        pred_v = row.values[0]\n",
    "        if len(row.values) > 1:\n",
    "            print(f'Warning: duplicate predictions for {tic_id}')\n",
    "        if pred_v[col_p] >= thresh:\n",
    "            agg_preds[tic_id].append('disp_p')\n",
    "        else:\n",
    "            masked_v = [v if i != col_p else 0 for i, v in enumerate(pred_v)]\n",
    "            agg_preds[tic_id].append(preds.columns[np.argmax(masked_v)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "final_preds = []\n",
    "for tic_id in list(agg_preds.keys()):\n",
    "    counts = {l: 0 for l in labels}\n",
    "    for e in agg_preds[tic_id]:\n",
    "        counts[e] += 1\n",
    "    maxcount = max(counts.values())\n",
    "    counts.update({\n",
    "        'tic_id': tic_id,\n",
    "        'maxcount': maxcount,\n",
    "    })\n",
    "    final_preds.append(counts)\n",
    "    \n",
    "final_preds = pd.DataFrame(final_preds).set_index('tic_id')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "tce_table = pd.read_csv(tces_file, header=0).set_index('tic_id')\n",
    "tce_labels = tce_table[labels]\n",
    "\n",
    "pl = final_preds.join(tce_labels, on='tic_id', how='left', lsuffix='_p')\n",
    "\n",
    "pl.head()\n",
    "pd.set_option('display.max_columns', None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Recall: 0.47368421052631576\n",
      "Precision: 0.2571428571428571\n"
     ]
    }
   ],
   "source": [
    "ppos = (pl['disp_p_p'] > 0)\n",
    "pos = (pl['disp_p'] > 0)\n",
    "\n",
    "pneg = (pl['disp_p_p'] == 0)\n",
    "neg = (pl['disp_p'] == 0)\n",
    "\n",
    "print('Recall:', len(pl[ppos & pos]) / len(pl[pos]))\n",
    "print('Precision:', len(pl[ppos & pos]) / len(pl[ppos]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "113428669\n",
      "120199940\n",
      "293962038\n",
      "29984131\n",
      "91576611\n",
      "283156726\n",
      "375506058\n",
      "395171208\n",
      "127722285\n",
      "357719182\n"
     ]
    }
   ],
   "source": [
    "for i in pl[pos & pneg][[]].join(tce_table, on='tic_id', how='left').index:\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "24491836\n",
      "276936320\n",
      "278866211\n",
      "280095254\n",
      "304729846\n",
      "344978642\n",
      "380783252\n",
      "384068226\n",
      "384744828\n",
      "424876542\n",
      "61802871\n",
      "417126296\n",
      "136040527\n",
      "142963071\n",
      "365494323\n",
      "388076435\n",
      "420115946\n",
      "149854222\n",
      "250475499\n",
      "71933719\n",
      "28016860\n",
      "321828403\n",
      "332146607\n",
      "202444594\n",
      "1715469662\n",
      "1715469667\n"
     ]
    }
   ],
   "source": [
    "for i in pl[neg & ppos][[]].join(tce_table, on='tic_id', how='left').index:\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>disp_p</th>\n",
       "      <th>disp_e</th>\n",
       "      <th>disp_n</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tic_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.005045</td>\n",
       "      <td>0.994265</td>\n",
       "      <td>0.007626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.017592</td>\n",
       "      <td>0.983393</td>\n",
       "      <td>0.013045</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.995171</td>\n",
       "      <td>0.003770</td>\n",
       "      <td>0.012834</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.001143</td>\n",
       "      <td>0.999179</td>\n",
       "      <td>0.002756</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.004596</td>\n",
       "      <td>0.996519</td>\n",
       "      <td>0.010981</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.001026</td>\n",
       "      <td>0.999057</td>\n",
       "      <td>0.002746</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.002057</td>\n",
       "      <td>0.998010</td>\n",
       "      <td>0.004230</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.005170</td>\n",
       "      <td>0.995272</td>\n",
       "      <td>0.012280</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.245568</td>\n",
       "      <td>0.732196</td>\n",
       "      <td>0.034971</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278866211</th>\n",
       "      <td>0.493813</td>\n",
       "      <td>0.495796</td>\n",
       "      <td>0.031896</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             disp_p    disp_e    disp_n\n",
       "tic_id                                 \n",
       "278866211  0.005045  0.994265  0.007626\n",
       "278866211  0.017592  0.983393  0.013045\n",
       "278866211  0.995171  0.003770  0.012834\n",
       "278866211  0.001143  0.999179  0.002756\n",
       "278866211  0.004596  0.996519  0.010981\n",
       "278866211  0.001026  0.999057  0.002746\n",
       "278866211  0.002057  0.998010  0.004230\n",
       "278866211  0.005170  0.995272  0.012280\n",
       "278866211  0.245568  0.732196  0.034971\n",
       "278866211  0.493813  0.495796  0.031896"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def compare(ensemble_preds, filter):\n",
    "    result = ensemble_preds[0][filter]\n",
    "    for preds in ensemble_preds[1:]:\n",
    "        result = result.append(preds[filter])\n",
    "    return result\n",
    "\n",
    "compare(ensemble_preds, preds.index == 278866211)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>disp_p_p</th>\n",
       "      <th>disp_e_p</th>\n",
       "      <th>disp_n_p</th>\n",
       "      <th>maxcount</th>\n",
       "      <th>disp_p</th>\n",
       "      <th>disp_e</th>\n",
       "      <th>disp_n</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tic_id</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>375506058</th>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           disp_p_p  disp_e_p  disp_n_p  maxcount  disp_p  disp_e  disp_n\n",
       "tic_id                                                                   \n",
       "375506058         0        10         0        10       1       0       0"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pl[pl.index == 375506058]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### PR curve"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "tics = set(ensemble_preds[0].index.values)\n",
    "\n",
    "tic_index = {v: i for i, v in enumerate(tics)}\n",
    "\n",
    "pred_ps = np.zeros([len(ensemble_preds), len(tic_index)])\n",
    "for i, preds in enumerate(ensemble_preds):\n",
    "    for row in preds.iterrows():\n",
    "        tic, pred_p = row[0], row[1][col_p]\n",
    "        pred_ps[i][tic_index[tic]] = pred_p\n",
    "\n",
    "lbl_ps = np.zeros([len(tic_index)], dtype=np.bool)\n",
    "for row in tce_labels.iterrows():\n",
    "    tic, lbl_p = row[0], row[1]['disp_p']\n",
    "    if tic in tic_index:\n",
    "        lbl_ps[tic_index[tic]] = (lbl_p > 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_cond_pos = float(np.sum(lbl_ps))\n",
    "\n",
    "def pr_at_th(th):\n",
    "    pred_pos = np.any(pred_ps >= th, axis=0)\n",
    "    true_pos = pred_pos & lbl_ps\n",
    "    num_pred_pos = int(np.sum(pred_pos))\n",
    "    num_true_pos = int(np.sum(true_pos))\n",
    "    if num_pred_pos == 0:\n",
    "        return 1.0, 0.0\n",
    "    return float(num_true_pos) / float(num_pred_pos), float(num_true_pos) / float(num_cond_pos)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AUC: 0.3972758656349221, max R: 1.0, max P: 1.0\n",
      "100% recall at: 24%, threshold: 0.0010000000000546265\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1200x740 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "\n",
    "ps, rs, ths = ([], [], [])\n",
    "th = np.max(pred_ps)\n",
    "while th >= 0.0:\n",
    "    p, r = pr_at_th(th)\n",
    "    if p > 0:\n",
    "        ps.append(p)\n",
    "        rs.append(r)\n",
    "    else:\n",
    "        ps.append(1.0)\n",
    "        rs.append(0.0)\n",
    "    ths.append(th)\n",
    "    th -= 0.0005\n",
    "    \n",
    "from sklearn import metrics\n",
    "\n",
    "print(f'AUC: {metrics.auc(rs, ps)}, max R: {max(rs)}, max P: {max(ps)}')\n",
    "    \n",
    "i = len(rs) - 1\n",
    "while rs[i] == 1.0:\n",
    "    i -= 1\n",
    "i += 1\n",
    "print(f'100% recall at: {int(ps[i] * 100)}%, threshold: {ths[i]}')\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(6, 3.7), dpi=200)\n",
    "\n",
    "ax.spines['top'].set_color('#808080')\n",
    "ax.spines['right'].set_color('#808080')\n",
    "ax.spines['left'].set_color('#808080')\n",
    "ax.spines['bottom'].set_color('#808080')\n",
    "ax.tick_params(direction='in', color='#808080')\n",
    "\n",
    "plt.grid(color='#c0c0c0', linestyle='--', linewidth=0.5)\n",
    "\n",
    "plt.ylabel('Precision', fontweight='bold')\n",
    "plt.xlabel('Recall', fontweight='bold')\n",
    "\n",
    "plt.xlim((0.0, 1.0))\n",
    "plt.ylim((0.0, 1.0))\n",
    "\n",
    "_ = plt.plot(rs, ps)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
